package com.jpro.module.infra.service.file;

import lombok.extern.slf4j.Slf4j;
import org.jodconverter.core.DocumentConverter;
import org.jodconverter.core.document.DefaultDocumentFormatRegistry;
import org.jodconverter.core.office.OfficeException;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

@Slf4j
@Component
public class DocConvertService {

    @Resource
    private DocumentConverter documentConverter;

    public void convertToPdf(File source, File target) throws IOException {
        if (target == null || !target.exists()) {
            target = Files.createTempFile(null, ".pdf").toFile();
        }
        // convert方法指定源文件对象/输入流
        // to方法指定目标文件对象/输出流(源文件可以不存在，如果不存在则会创建)
        // execute方法是执行转换的方法，方法没有返回值，是同步执行
        try {
            documentConverter.convert(source).to(target).as(DefaultDocumentFormatRegistry.PDF).execute();
        } catch (OfficeException e) {
            log.error("文档转换异常:{}", e.getMessage());
        }
    }

    public void convertToHtml(File source, File target) throws IOException {
        if (target == null || !target.exists()) {
            target = Files.createTempFile(null, ".html").toFile();
        }
        // execute方法是执行转换的方法，方法没有返回值，是同步执行
        try {
            documentConverter.convert(source).to(target).as(DefaultDocumentFormatRegistry.HTML).execute();
        } catch (OfficeException e) {
            log.error("文档转换异常:{}", e.getMessage());
        }
    }

}
